window.self.resizeTo(900, 600);

$(function() {

    // 環境変数リスト
    var environments = { "user": {}, "system": {} };

    // ユーザ名を取得・表示
    var user_name = new ActiveXObject("WScript.Network").UserName;
    $("#user_name").html(user_name);

    var shell = new ActiveXObject("WScript.Shell");

    // ユーザ環境変数
    var user_env = GetEnvList(shell, "User").split("\n")||[];
    
    // システム環境変数
    var system_env = GetEnvList(shell, "System").split("\n")||[];

    // テーブルに環境変数行を追加する
    var addEnvRows = function (type, $table, env_list) {
    
        var data = "";

        var getEnv = function(env) {
            var __p = env.indexOf("=");
            return {
                "name" : env.substring(0, __p),
                "value": env.substring(__p+1)
            };
        };
        
        $(env_list).each(function() {
            var env = getEnv(this);
            var name = "<TD class='env_name'>" + env.name + "</TD>";
            var value = "<TD class='env_value'>" + env.value + "</TD>";
            var $row = $("<TR class='env_row'>" + name + value + "</TR>")
                .attr("id", type + "." + env.name);
            $table.append($row);
            // 広域スコープ変数に格納
            environments[type][env.name] = env.value;
        });
    };

    addEnvRows("user", $("#user_env"), user_env);
    addEnvRows("system", $("#system_env"), system_env);

    // リストの表示制御
    $("TR.env_row")
        .bind("mouseover", function() {$(this).addClass("sel_row");})
        .bind("mouseout", function() {
            $(this).removeClass("active_row");
            $(this).removeClass("sel_row");
         })
        .bind("mousedown", function() {$(this).addClass("active_row");})
        .bind("mouseup", function() {$(this).removeClass("active_row");})
        .bind("click", function() {
            var $row = $(this);
        
            var type = $row.attr("id").substring(0, $row.attr("id").indexOf("."));
            var name = $row.children(":eq(0)").text();
            var value = $row.children(":eq(1)").text();

            // 環境変数編集ダイアログの表示
            var ret = showEditDialog(false, type, name, value, event.x, event.y);

            //$row.children(":eq(0)").text(ret.name||name);
            //$row.children(":eq(1)").text(ret.value||value);
        });

    // ユーザ環境変数追加処理
    $("#add_user_env").bind("click", function() {
        // 環境変数編集ダイアログの表示
        var ret = showEditDialog(true, "user", null, null, event.x, event.y);
        if (!ret) { return; }
        addEnvRows("user", $("#user_env"), [ret.name + "=" + ret.value]);
    });

    // システム環境変数追加処理
    $("#add_system_env").bind("click", function() {
        // 環境変数編集ダイアログの表示
        var ret = showEditDialog(true, "system", null, null, event.x, event.y);
        if (!ret) { return; }
        addEnvRows("system", $("#system_env"), [ret.name + "=" + ret.value]);
    });

    // 環境変数編集ダイアログの表示
    var showEditDialog = function(isNew, type, name, value, x, y) {
        var args = {
            type:  type,
            name:  name,
            value: value,
            shell: shell,
            user_name: user_name,
            isNew: isNew,
            environments: environments
        };

        var opts = {
            dialogWidth:  "400px",
            dialogHeight: "240px",
            dialogLeft: x,
            dialogTop: y,
            status: "no",
            resizable: "no",
            scroll: "no",
            help: "no"
        };

        return showModal("EditEnv.hta", args, opts);
    };

});
